package org.darcy.service.org;

import java.util.List;

import org.darcy.entity.org.Department;
import org.darcy.entity.privilege.SysUser;
import org.darcy.framework.generic.GenericService;
import org.darcy.framework.model.PageData;
import org.darcy.framework.model.PageParam;
import org.darcy.utils.vo.ReturnVo;
import org.darcy.vo.org.OrgTreeVo;

/**
 * 组织机构
 **/
public interface OrgDepartmentService extends GenericService<Department> {
	
	/**
	 * Department列表(分页)
	 * 
	 * @param param 分页参数
	 */
	PageData<Department> page(PageParam<Department> param);
	
	/**
	 * 导入部门
	 * 
	 * @param departments 部门列表
	 */
	ReturnVo<List> importDepartment(List<Department> departments, SysUser loginUser);

	/**
	 * 获取所有的子部门的id列表
	 * 
	 * @param id  id
	 * @param ids ids
	 */
	void getAllDepartmentIds(Integer id, List<Integer> ids);

	/**
	 * 添加或者修改
	 * 
	 * @param department department
	 * @param loginUser  loginUser
	 */
	void saveOrUpdate(Department department, SysUser loginUser);

	/**
	 * 通过ids删除部门
	 * 
	 * @param ids ids
	 * @return
	 */
	ReturnVo<String> deleteByIds(List<String> ids);


	/**
	 * 分页查询列表
	 *
	 * @param department 条件
	 * @return
	 */
	List<Department> getAll(Department department);

	/**
	 * 获取组织树
	 * 
	 * @return
	 */
	List<OrgTreeVo> getOrgTree();

	/**
	 * 获取部门树
	 * 
	 * @param companyId 公司id
	 * @param deptName  部门名称
	 * @return
	 */
	List<OrgTreeVo> getDepartmentTree(Integer companyId, String deptName);
	
	/**
	 * 获取财务科
	 */
	Department getFinancialDept();
}
